package com.yanghui.service;


import com.yanghui.pojo.Blog;
import com.yanghui.pojo.BlogStatus;

import java.util.List;
import java.util.Map;

/**
 * @author YH
 */
public interface BlogService {

    /**
     * 按照博客状态查询博客的数量
     * 三种状态：
     * 草稿（-1）、已经发表（1）、回收站（2）
     * @return
     */
    List<BlogStatus> selectBlogCountByStatus();

    /**
     * 实现添加博客功能
     * 同时需要把对应的博客类别的数量更新
     */
    int addBlog(Blog blog);

    /**
     * 按照给定的条件查询博客
     * 如标题、关键字、博客状态条件
     * 以及是否按照某个字段进行排序
     */
    List<Blog> selectGroupLikeBlogListByPage(Map<String, Object> map);

    /**
     * 按照博客id查询对应的博客
     */
    Blog selectBlogById(Integer id);

    /** 更新博客 */
    int updateBlog(Blog blog);

    /** 按照博客状态查询博客 */
    List<?> selectBlogListByStatus();

    /**
     * 按照指定日期查询博客数量
     */
    Map<Object,Object> selectBlogListByDate(Map map);

    /**
     * 按照博客点击量降序
     * 取出前几条数据
     * id,clickNum
     * 可以通过id查看对应的博客信息
     */
    List<?> selectBlogByClick();

    List<?> selectBlogByDate(Map<String, Object> map);

    /**
     * 把所有的博客类别都查询出前N篇博客
     * @return
     */
    Map<String, List<Blog>> selectBlogByAllType();

    /**
     * 查询下一篇博客
     */
    Blog selectNextBlog(Integer id);

    /**
     * 查询上一篇博客
     */
    Blog selectPrevBlog(Integer id);

    /**
     * 按照查询条件模糊查询博客
     */
    List<Blog> selectLikeBlogListByPage(Map<String, Object> map);
}
